package at.fhj.antesk.steamvaluecalc.interfaces;

import java.util.List;

import at.fhj.antesk.steamvaluecalc.data.Game;
import at.fhj.antesk.steamvaluecalc.data.Price;
import at.fhj.antesk.steamvaluecalc.data.Profile;
import at.fhj.antesk.steamvaluecalc.exceptions.DataRetrieverException;

public interface DataRetriever {

    /**
     * Retrieves raw html data as string from the given url.
     * 
     * @param url
     * @return
     */
    String retrieveData(String url);

    /**
     * Retrieves all profile data from the given url.
     * 
     * @param url
     * @return
     */
    Profile retrieveProfile(String url);

    /**
     * Retrieves a game list from the given url.
     * 
     * @param url
     * @return
     */
    List<Game> retrieveGameList(String url);

    /**
     * Returns the price with currency for the given game. Returns null
     * if the price could not be retrieved or game is free to play.
     * 
     * @param game
     * @return
     * @throws DataRetrieverException
     */
    Price retrievePriceForGame(Game game) throws DataRetrieverException;

}
